<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        构造函数的执行流程
            1. 立刻创建一个新的对象
            2. 将新建的对象设置为函数中的this，在构造函数中可以使用this来引用新建的对象
            3. 逐行执行函数的代码
            4. 将新建的对象作为返回值返回
        this：
            除了箭头函数，每个函数都有一个this指针，包括构造函数，指向该方法的调用者
        构造函数：
            使用同一个构造函数创建的对象我们称之为一类对象，也将一个构造函数称为一个类。在函数之前加个new关键字，
            会默认将该函数作为构造函数执行。
     -->
    <script>
        function demo(obj) {
            this.x = obj.a;
        }
        demo({ a: 1 });
        console.log(window.x);


        const d = new demo({a:1});//使用new调用demo时，demo中得this时demo实例对象
        console.log(d.x);
    </script>
</body>

</html>